
#include<iostream>

using namespace std;

// 重载解析
//
// 完全匹配 > 常量转换 > 升级转换 > 标准转换 > 自定义转换(运算符重载)>省略号匹配

void foo (char * p , int n)
{
	cout << "foo(char *, int)" << endl;
}

void foo (const char * p , char n)
{
	cout << "foo(const char *, int)" << endl;
}



void bar(char c)
{
	cout << "bar(char)" << endl;
}

void bar(int n)
{
	cout << "bar(int)" << endl;
}

void bar(long long l)
{
	cout << "bar(long)" << endl;
}


void hum (double f, ...) // 可变长，参数表
{
	cout << "hum(double,...)" << endl;
}


void hum (int n, void *p) // 
{
	cout << "hum(double,void *)" << endl;
}


int main(void)
{
	char *p;
	char a;
	foo(p, a); // 常量转换 优于 升级转换   

	short s;
	bar(s);   //升级转换( short > int )  优于  标准转换(有信息，损失 short -> char)


	double f ;
	void *pp;
	hum(f,pp); // 标准转换 优于 省略号匹配

	return 0;
}

